const fs = require('fs')
const { find, save, findById, updateById, deleteById } = require('./students')

// 解决路由的问题 2 express 提供的方便的形式 专门用来包装路由的
const express = require('express')
// 1 创建一个路由容器
const router = express.Router()
// 2 把路由都挂在到 router 路由容器中
router.get('/', (req, res) => {
    res.redirect('/students')
})

// 学生管理首页
router.get('/students', (req, res) => {
    // 查询学生
    find().then(students => {
        res.render('index.html' , {
            students
        })
    }).catch(err => {
        res.status(500).send('Server Error')
    })
})

// 学生新增页面
router.get('/students/new', (req, res) => {
    res.render('new.html')
})

// 学生新增
router.post('/students/new', (req, res) => {
    // 获取 post 数据
    const student = req.body
    console.log(student)

    // 处理
    save(student).then(() => {
        res.redirect('/students')
    }).catch(err => {
        res.status(500).send('Server Error')
    })
})

// 学生修改页面
router.get('/students/edit', (req, res) => {
    console.log(req.query.id)
    const id = req.query.id
    findById(Number(id)).then((student) => {
        console.log(student)
        res.render('edit.html', {
            student
        })
    }).catch(err => {
        res.status(500).send('Server Error')
    })
    
})

// 学生修改
router.post('/students/edit', (req, res) => {
    // 获取 post 数据
    const student = req.body
    console.log(student)

    // 处理
    updateById(student).then(() => {
        res.redirect('/students')
    }).catch(err => {
        res.status(500).send('Server Error')
    })
})

// 学生删除
router.get('/students/delete', (req, res) => {
    // 获取要删除的 id
    const id = req.query.id

    // 根据 id 执行删除操作
    deleteById(Number(id)).then(() => {
        res.redirect('/students')
    }).catch(err => {
        res.status(500).send('Server Error')
    })
})

// 3 把 router 导出
module.exports = router


// 解决路由的问题 1 这样做 可以解决问题 但是用起来不方便
// module.exports = (app) => {

//     app.get('/', (req, res) => {
//         res.redirect('/students')
//     })

//     app.get('/students', (req, res) => {

//         // 读取文件中的数据
//         // readFile 的第二个参数是可选的，传入 utf8 就是告诉把读取到的文件按照 utf8 编码转成我们能认识的字符
//         // 除了这样转换，还可以使用 data.toString() 的方式转换
//         fs.readFile('./db.json', 'utf8', (err, data) => {
//             if (err) {
//                 return res.status(500).send('Server Error')
//             }
    
//             console.log(data)
    
//             // 把字符串转换成对象
//             const students = JSON.parse(data).students
    
//             res.render('index.html' , {
//                 students
//             })
//         })
//     })
    
//     app.get('/students/new', (req, res) => {
    
//     })
// }